Much of today's data storage includes the encryption of the data, whether the data is stored locally in a device memory or hard drive, on a local area network server, or transmitted remotely to another computer system or network for storage. Encryption is desired to protect the data in the event the device with the data is lost or otherwise compromised, or if the data is intercepted while in transmission. With the need for encryption also comes the need to effectively manage the associated cryptographic keys. As a practical matter, good cryptographic keys contain too many characters for a person to commit to memory and must therefore be stored in an electronic form until ready for use. The requirement to store the cryptographic keys for later use, and the transmission of the keys to the encryption software presents challenges in maintaining the security of the keys.